/**
 * 二维无限大平面给N个已知位置
 * 要求求一个位置，在这个位置上放一个马，能够攻击到最多已知位置
 * 注意马不能放在已知位置上
 * 因为坐标很大，不能直接用二维数组，哈希一下即可
 */
#include <bits/stdc++.h>
using namespace std;

using pii = pair<int, int>;
using vpii = vector<pii>;

namespace std {

template<> struct hash<pii>{
    size_t operator () (const pii & p) const {
        return p.first * 13313 + p.second;
    }
};

template<> struct equal_to<pii>{
    bool operator () (const pii & a, const pii & b) const {
        return a.first == b.first and a.second == b.second;
    }
};

}

const vpii DX {
    {-2, -1},
    {-2, +1},
    {-1, +2},
    {+1, +2},
    {+2, +1},
    {+2, -1},
    {+1, -2},
    {-1, -2}
};

int N;
vpii Vec;
unordered_set<pii> Set;
unordered_map<pii, int> Ans;

void work(){
    cin >> N;
    Vec.assign(N, {});
    for(auto & p : Vec) {
        cin >> p.first >> p.second;
        Set.insert(p);
    }

    int ans = 0;
    for(const auto & p : Vec){
        for(const auto & d : DX){
            pii newPos {p.first + d.first, p.second + d.second};
            auto it = Set.find(newPos);
            if(it == Set.end()){
                ans = max(ans, Ans[newPos] += 1);
            }
        }
    }
    for(const auto & p : Ans){
        if(p.second == ans){
            cout << p.first.first << " " << p.first.second << endl;
            return;
        }
    }
    return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);	
    int nofkase = 1;
    while(nofkase--) work();
	return 0;
}